大家中秋快樂 :)
今天來聊聊使用 CloudFront 時,關於壓力測試(load testing/stress testing)的一些想法。
網站服務要上線前,通常會有一個「壓力測試」的項目要處理。目的希望確認相關的各個系統組件都能承接特定數量的請求,順利提供服務。
那麼,當要測試 CloudFront 時,要注意哪些項目呢?
我建議可以注意以下資訊。
比方說,假設透過 GA 可以看到網站上最大線上人數約是 30,000。我們就可以推估每秒平均約進來 100人 (30,000/(60*5),因為 GA 的 Active Users 是統計最近 5 分鐘的資訊
目前常用工具,大概有以下幾個
$ ab -c 50 -n 100 https://2023ironman-watch.kgg23.com/
# -c 代表同時間發出多少請求,可理解成同時間有多少個 thread/users 在發請求;
# -n 代表請求總數
# 所以 -c 50 -n 100,代表 50 個 thread,每個 Thread 發兩筆請求。
參考執行結果
Server Software: CloudFront
Server Hostname: 2023ironman-watch.kgg23.com
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: ECDH X25519 253 bits
TLS Server Name: 2023ironman-watch.kgg23.com
Document Path: /
Document Length: 0 bytes
Concurrency Level: 50
Time taken for tests: 0.585 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Total transferred: 39300 bytes
HTML transferred: 0 bytes
Requests per second: 170.87 [#/sec] (mean)
Time per request: 292.619 [ms] (mean)
Time per request: 5.852 [ms] (mean, across all concurrent requests)
Transfer rate: 65.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 25 129 29.1 150 168
Processing: 6 31 25.1 21 106
Waiting: 6 25 17.7 18 90
Total: 121 159 28.9 163 253
Percentage of the requests served within a certain time (ms)
50% 163
66% 167
75% 171
80% 173
90% 178
95% 251
98% 252
99% 253
100% 253 (longest request)
順便替 AWS 工商一下,有個方案叫做 AWS 上的分散式負載測試,大家要不要也測試看看? :)
仔細想想,或許好像其實沒必要一定要替 CF 做 Load testing,it's CloudFront,不是嗎?
中秋節快樂
感謝您的收看,明天我們預計針對日誌使用/分析的部分做說明。